﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#define ADD(a,b) ((a)+(b))
using namespace std;
int add(int a, int b)
{
	return a + b;
}

double add(double a, double b)
{
	return a - b;
}
void func()
{
	cout << "func()" << endl;
}
void func(int a)
{
	cout << "func(int a)" << endl;
}
void f(int a, char b)
{
	cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
	cout << "f(char b,int a)" << endl;
}
void swap1(int* a, int* b)
{
	int c = 0;
	c = *a;
	*a = *b;
	*b = c;
}
void swap2(int& a, int& b)
{
	int c = 0;
	c = a;
	a = b;
	b = c;
}
inline int add2(int a, int b)
{
	return a + b;
}
void ptr(int a)
{
	cout << "ptr(int)" << endl;
}
void ptr(int* a)
{
	cout << "ptr(int*a)" << endl;
}
//int main()
//{
//	//double a = 1, b = 2;
//	//double c=add(a, b);
//	//cout << c << endl;
//	//func();
//	//func(1);
//	//f(1, 's');
//	//f('s', 1);
//	//int a = 0;
//	//int& b = a;
//	//int c = 20;
//	//b = c;
//	//cout << &a << &b << &c << endl;
//	//int a = 1, b = 10;
//	//swap1(&a, &b);
//	//swap2(a, b);
//	//cout << a << " " << b << endl;
//
//	//const int a = 10;
//	//int& b = a;//权限放大
//	//const int& b = a*3;
//	//cout << &a<<" "<<&b << endl;
//	//int b = 20;
//	//const int& rb = b;
//
//	//int a = 10;
//	//const int& ra = 30;
//	//const int& rb = a * 3;
//	//cout << a << ra << endl;
//	//double d = 12.14;
//	//const int& rc = d;
//	//cout << d << rc << endl;
//	//
//	//char b = 's';
//	//char& c = b;
//	//cout << sizeof(c) << " " << sizeof(&b) << endl;
//	//int c = add2(2, 3);
//	//cout << c << endl;
//	//int ret = ADD(1&2, 2|5);
//	//cout << ret << endl;
//	//int a = 2 & 6;
//	//cout << a << endl;
//	//int d = 4 | 6;
//	//cout << d << endl;
//	ptr(NULL);
//	ptr((int*)NULL);
//	ptr(nullptr);
//	return 0;
//}
//#include<iostream>
//using namespace std;
// 计算⼀下A/B/C实例化的对象是多⼤？
//class A
//{
//public:
//	void Print()
//	{
//		cout << _ch << endl;
//	}
//private:
//	char _ch;
//	int _i;
//};
//class B
//{
//public:
//	void Print()
//	{
//		//...
//	}
//};
//class C
//{};
//int main()
//{
//	A a;
//	B b;
//	C c;
//	cout << sizeof(a) << endl;
//	cout << sizeof(b) << endl;
//	cout << sizeof(c) << endl;
//	return 0;
//}
class A
{
public:
	void Print()
	{
		cout << this << endl;
		cout << "A::Print()" << endl;
	}
private:
	int _a;
};
int main()
{
	A* p = nullptr;
	p->Print();
	return 0;
}